<?
/**
 * @file funciones.template.php
 * @copyright Copyright (C) 2007 Moka Software de Mexico S.A. de C.V.
 * @version 1.0.0
 * @author Javier Martin Castro < javier at mokasoftware.com >
 * @package
 * Proyecto: MiMorelia.com
 * @date 27 Marzo 2007
 *
 * TODO: ...
 */


/**
 * Función que genera el menú de la web, pasandole la estructura del menú
 * y un array con las opciones
 * @param string Estructura html del menú
 * @param array Opciones del menú
 */
function html_menu($estructura='',$opciones='',$seleccionado='',$clase_seleccionado=''){
    if($estructura != '' && is_array($opciones)){
        $menu = '';
        foreach($opciones as $opcion => $value){
            if($seleccionado === $opcion) $menut = str_replace('%%seleccionado%%','class="'.$clase_seleccionado.'"',$estructura);
            else $menut = str_replace('%%seleccionado%%','',$estructura);
            $menut = str_replace('%%url%%',$value['url'],$menut);
            $menut = str_replace('%%extra%%',$value['extra'],$menut);
            $menu .= str_replace('%%opcion%%',$opcion,$menut);
        }
        return $menu;
    }
}//FIN html_menu

/**
 * Función que genera las opciones de un select pasándole como parámetro
 * un array
 * @param array Opciones del select
 * @param string Opción a seleccionar
 */
function html_select($opciones='',$seleccionado='',$nombre_select=''){
    $retorno = "<select name=\"$nombre_select\" id=\"$nombre_select\">";
    if(is_array($opciones) && $nombre_select != ''){
        if(count($opciones) == 0) return false;
        foreach ($opciones as $value => $opcion){
            $retorno .= "<option value=\"$value\"";
            if($value == $seleccionado) $retorno .= ' selected="selected"';
            $retorno .= ">".htmlentities($opcion)."</option>";
        }
    }
    $retorno .= '</select>';
    return $retorno;
}

/**
 * Función que genera las opciones de un select numérico pasándole como parámetro
 * número de inicio y de fin
 * @param int Número de inicio
 * @param int Número de fin
 * @param string Nombre del select
 * @param int Valor seleccionado
 */
function html_select_num($inicio=0,$fin=0,$nombre_select='',$seleccionado=''){
    $retorno = "<select name=\"$nombre_select\" id=\"$nombre_select\">";
    if(is_int($inicio) && is_int($fin) && $nombre_select != ''){
        if ($inicio > $fin || $fin == 0) return false;
        for($i=$inicio;$i<$fin+1;$i++){
            $retorno .= "<option value=\"$i\"";
            if($i == $seleccionado) $retorno .= ' selected="selected"';
            if($fin >= 1000) $retorno .= ">".sprintf("%04d",$i)."</option>";
            else if($fin >= 100) $retorno .= ">".sprintf("%03d",$i)."</option>";
            else if($fin >= 10) $retorno .= ">".sprintf("%02d",$i)."</option>";
        }
    }
    $retorno .= '</select>';
    return $retorno;
}

/**
 * Función que me genera una serie de select para elegir una fecha
 * @param string nombre Prefijo a añadir en los selects para los días, mes y año
 * @param string label Label del select
 * @param int dia Día a seleccionar del select
 * @param int mes Mes a seleccionar en el select
 * @param int anho Año a seleccionar en el select
 * @return string Cadena conteniendo el html de los select o devuelve false si el nombre no fue indicado
 */
 function html_select_date($nombre='',$label='',$dia=0,$mes=0,$anho=0){
 	$meses = array(1 => 'Enero',2 => 'Febrero',3 => 'Marzo',4 => 'Abril',5 => 'Mayo',6 => 'Junio',7 => 'Julio',8 => 'Agosto',9 => 'Septiembre',10 => 'Octubre',11 => 'Noviembre',12 => 'Diciembre');
 	$retorno = '';
 	if($nombre != ''){
 		$retorno .= '<label for="'.$nombre.'_dia">'.$label.'</label>:&nbsp;';
 		$dia = ($dia == 0) ? date('d') : 0;
 		$retorno .= html_select_num(1,31,$nombre.'_dia',$dia);
 		//GENERAR MESES
 		 $mes = ($mes == 0) ? date('m') : 0;
 		$retorno .= '<select name="'.$nombre.'_mes" id="'.$nombre.'_mes">';
 		for($i=1;$i<13;$i++){
			$retorno .= "<option value=\"$i\"";
			if($i == $mes) $retorno .= ' selected="selected"';
			$retorno .= ">{$meses[$i]}</option>";
 		}
 		$retorno .= '</select>';//FIN GENERAR MESES
 		$anho = ($anho == 0) ? date('Y') : 0;
 		$retorno .= html_select_num(date('Y')-4,date('Y')+4,$nombre.'_anho',$anho);
 		return $retorno;
 	}
 	else return false;
 }

 /**
  * Función que construye un formulario pasándole un array como formulario
  * @param string nombre Nombre del formulario
  * @param array form Matriz que contiene la estructura del formulario
  * @return string Cadena que contiene el html del formulario generado
  */
 function html_form_builder($nombre='',$action='',$legend='',$form=array(),$extra=''){
 	$retorno = "<form name=\"$nombre\" id=\"$nombre\" method=\"post\" action=\"$action\"><fieldset><legend>$legend</legend>";
 	if(is_array($form)){
 		foreach($form as $key => $value){
 			switch($value['tipo']){
 				case 'text':
					$retorno .= "{$value['antes']}<label for=\"$key\">{$value['label']}</label>:&nbsp;<input type=\"text\" name=\"$key\" id=\"$key\" value=\"{$value['value']}\" {$value['extra']} />{$value['despues']}<br />";
					break;
 				case 'password':
					$retorno .= "{$value['antes']}<label for=\"$key\">{$value['label']}</label>:&nbsp;<input type=\"password\" name=\"$key\" id=\"$key\" value=\"{$value['value']}\" {$value['extra']} />{$value['despues']}<br />";
					break;
 				case 'file':
					$retorno .= "{$value['antes']}<label for=\"$key\">{$value['label']}</label>:&nbsp;<input type=\"file\" name=\"$key\" id=\"$key\" {$value['extra']} />{$value['despues']}<br />";
					break;
				case 'textarea':
					$retorno .= "{$value['antes']}<label for=\"$key\">{$value['label']}</label>:<br /><textarea name=\"$key\" id=\"$key\" {$value['extra']}>{$value['value']}</textarea>{$value['despues']}<br />";
					break;
				case 'select':
					$retorno .= "{$value['antes']}<label for=\"$key\">{$value['label']}</label>:&nbsp;".html_select($value['opciones'],$value['selected'],$key).$value['despues'].'<br />';
					break;
				case 'select_num':
					$retorno .= "{$value['antes']}<label for=\"$key\">{$value['label']}</label>:&nbsp;".html_select_num((int)$value['inicio'],(int)$value['fin'],$key,$value['selected']).$value['despues'].'<br />';
					break;
				case 'select_date':
					$retorno .= $value['antes'].html_select_date($key,$value['label'],$value['dia'],$value['mes'],$value['anho']).$value['despues'].'<br />';
					break;
				case 'submit':
					$retorno .= "{$value['antes']}<input type=\"submit\" name=\"$key\" id=\"$key\" value=\"{$value['label']}\" {$value['extra']} />{$value['despues']}";
					break;
				case 'hidden':
					$retorno .= "{$value['antes']}<input type=\"hidden\" name=\"$key\" id=\"$key\" value=\"{$value['value']}\" {$value['extra']} />{$value['despues']}";
					break;
				case 'button':
					$retorno .= "{$value['antes']}<input type=\"button\" name=\"$key\" id=\"$key\" value=\"{$value['label']}\" {$value['extra']} />{$value['despues']}";
					break;
				case 'reset':
					$retorno .= "{$value['antes']}<input type=\"reset\" name=\"$key\" id=\"$key\" value=\"{$value['label']}\" {$value['extra']} />{$value['despues']}";
					break;
				case 'radio':
					$retorno .= "{$value['antes']}<label for=\"$key\">{$value['label']}</label>:&nbsp;";
					if(is_array($value['opciones'])){
						foreach($value['opciones'] as $keyr => $valuer)
							$retorno .= "<input type=\"radio\" name=\"$key\" id=\"$key\" value=\"$valuer\" />&nbsp;$keyr";
					}
					$retorno .= $value['despues'].'<br />';
					break;
				case 'checkbox':
					$retorno .= "{$value['antes']}<label for=\"$key\">{$value['label']}</label>:&nbsp;";
					foreach($value['opciones'] as $keyr => $valuer)
						$retorno .= "<input type=\"checkbox\" name=\"$keyr\" id=\"$keyr\" value=\"$valuer\" />&nbsp;$keyr";
					$retorno .= $value['despues'].'<br />';
					break;
 			}
 		}
 	}
 	$retorno .= '<br />'.$extra.'</fieldset></form>';
 	return $retorno;
 }

?>